import * as auth from '@/utils/auth'
import { login, getUserInfo, getUserDetailById } from '@/api/user'
console.log(auth)
export default {
  namespaced: true,
  // 定义变量
  state: {
    // 登录成功的token
    token: auth.getToken() || null,
    // 登录人信息
    userInfo: {}
  },
  // 修改变量
  mutations: {
    /**
     *
     * @param {*} state 变量对象
     * @param {*} token 外面调用传过来的值
     */
    // 存token
    setToken (state, token) {
      // 存内存
      state.token = token
      // 存本地
      auth.setToken(token)
    },
    // 删除token
    delToken (state) {
      state.token = null
      auth.removeToken()
    },
    // 存登录人信息
    setUserInfo (state, userInfo) {
      state.userInfo = userInfo
    },
    // 删登录人信息
    delUserInfo (state) {
      state.userInfo = {}
    }
  },
  actions: {
    // 退出登录
    logoutAction ({ commit }) {
      commit('delToken')
      commit('delUserInfo')
    },
    // 获取登录人信息
    async getUserInfoAction ({ commit }) {
      /**
       * 1. 发请求获取登录人信息
       * 2. 通过commit调用mutations方法存储
       */
      const userInfo = await getUserInfo()
      // 依赖上一步用户ID, 获取用户头像
      const photoInfo = await getUserDetailById(userInfo.userId)
      console.log(userInfo, photoInfo)
      commit('setUserInfo', { ...userInfo, ...photoInfo })
    },
    // 登录请求方法
    async getTokenActions ({ commit }, formData) {
      const token = await login(formData)
      console.log('token: ', token)
      commit('setToken', token)
    }
  }
}
